<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title></title>
    <meta name="description" content="">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link rel="stylesheet" href="">
    <style>
      .box{
        outline: 1px solid red;
        display: inline-block;
        position: relative;
      }
      svg{
        width: calc(140px + 6px);
        height: calc(140px + 6px);
        display: block;
        transform: rotate(270deg);
      }
      svg circle {
        width: 100%;
        height: 100%;
        fill: transparent;
        stroke-width: 3;
        stroke: #ccc;
        transform: translate(3px, 3px);
      }
      svg .progress{
        stroke: red;
        stroke-dasharray: 440;
        stroke-dashoffset: calc(440 - (440 * var(--num)) / 100);
        transition: all 2s;
        @starting-style {
          stroke-dashoffset: calc(440 - (440 * 0) / 100);
				}
      }

      .box .dot{
        position: absolute;
        inset: 3px;
        z-index: 10;
        transition: all 2s;
        transform: rotate(calc(3.6deg * var(--num)));
        @starting-style {
          transform: rotate(0);
				}
      }
      .box .dot::before{
        content: '';
        width: 10px;
        height: 10px;
        border-radius: 50%;
        background: orange;
        position: absolute;
        top: -5px;
        left: 50%;
        transform: translateX(-50%);
      }

    </style>
  </head>
  <body>
    <div class="box" style="--num: 40">
      <div class="dot"></div>
      <svg>
        <circle cx="70" cy="70" r="70"></circle>
        <circle class="progress" cx="70" cy="70" r="70"></circle>
      </svg>
    </div>
  </body>
</html>